RTC
 
Component RTC
Real Time Clock
Component Level: High
Typical Usage:
(Examples of a typical usage of the component in user code. For more information please see the page Component Code Typical Usage.)

Assume the component name "RTC1".

(1)
There is current time and date read from the component in this example. Chronograph is also used.

 MAIN.C
 
void main(void)
{
  byte chron;
  
  TIMEREC Time;
  DATEREC Date;
  
  RTC1_GetTime( &Time );
  RTC1_GetDate( &Date );
  
  RTC1_ClearChronograph();
  RTC1_EnableChronograph();
  chron=RTC1_GetChronograph();

}

(2)
There is alarm used in the following example:


 MAIN.C
 
#include "Events.h"
 
extern volatile Flags flags;

void main(void)
{
  TIMEREC Time;
  
  RTC1_GetTime( &Time ); /* get current time */
  
  /* set alarm one minute later */
  RTC1_SetAlarm( Time.Hour, Time.Min+1 );
  flags=0;
  /* loop until all events occured */
  for (;flags.chron & flags.alarm & flags.day \
        & flags.hour & flags.minute & flags.second \
        & flags.tb1 & flags.tb2;) {         
  /* user code */
  }
}

 EVENTS.H
Assume structure Flags is included into module main and events:

typedef struct {
  byte chron    :1;
  byte alarm    :1;
  byte day      :1;
  byte hour     :1;
  byte minute   :1;
  byte second   :1;
  byte tb1      :1;
  byte tb2      :1;
} Flags;

 EVENTS.C

#include "Events.h"

volatile Flags flags=0;

void RTC1_OnAlarm(void)
{
  /* set alarm flag in the alarm event handler */
  flags.alarm = 1; 
}

void RTC1_OnHour(void)
{
  /* set hour flag in the hour event handler */
  flags.hour = 1; 
}

void RTC1_OnMinute(void)
{
  /* set minute flag in the minute event handler */
  flags.minute = 1; 
}

void RTC1_OnSecond(void)
{
  /* set second flag in the second event handler */
  flags.second = 1; 
}

void RTC1_OnTimebase1(void)
{
  /* set timebase1 flag in the timebase1 event handler */
  flags.tb1 = 1; 
}

void RTC1_OnTimebase2(void)
{
  /* set timebase2 flag in the timebase2 event handler */
  flags.tb2 = 1; 
}

void RTC1_OnChronograph(void)
{
  /* set chronograph flag in the chronograph event handler */
  flags.chron = 1; 
}